const EventEmitter = require('events')
// events事件驱动 在很多API底层使用了，平常使用较少
// Nodejs事件模型采用了： 发布订阅设计模式  
/*
   订阅者1 ---->                      ----->> 发布者
   订阅者  ---->     |调度中心|    
   订阅者2 --->                       ---->> 发布者
*/
// off 删除事件   on 监听事件（订阅）    emit 发布事件   once 触发事件

const event = new EventEmitter()
//监听test
event.on('test',(data)=>{
    console.log(data)       // xmxmxmxmx
})
event.emit('test','xmxmxmxmx') //派发事件

const fn = (arg) => {
    console.log(arg);
}
event.on('test2', fn)   // 监听事件
event.off('test2', fn)  // 删除事件
event.once('test2', fn)  // 触发一次

// on 默认监听 10个事件， 多于就会报错
// 取消10个的限制
// event.setMaxListeners(20)  // 修改为20个
// console.log(event.getMaxListeners); 

// process 这个API也有 on 、off、emit、once等方法，process底层将event嫁接到 process原型对象上，挂载带globalThis上